package com.loklok.confuse.util;

public class PromptTemplate {

    public static final StringBuilder voSb = new StringBuilder();
    static {
        voSb.append("请根据提供的 Java 类生成一个通用的 Velocity 模板（VM 模板），规则是将 类上的 %s 替换成 $!{vo.classPrefix}，增加导入动态包，并且该代码放在 package 下面一行: \n")
                .append("#foreach($pck in $vo.importPackage)\n" +
                        "    $!{pck}\n" +
                        "#end")
                .append("再类属性上增加注解 ： @JsonProperty(value = '$!{vo.xxx}'),其中 xxx 为属性名称，其他和原java类保存一致，按照此规则，请给下面java类：\n")
                .append("%s")
                .append("生成一个 vm 模板，返回数据直接是 vm 模板类，不需要返回别的");
    }

    public static final StringBuilder dtoSb = new StringBuilder();
    static {
        dtoSb.append("请根据提供的 Java 类生成一个通用的 Velocity 模板（VM 模板），规则是将 类上的 %s 替换成 $!{request.classPrefix}，增加导入动态包，并且该代码放在 package 下面一行: \n")
                .append("#foreach($pck in request.importPackage)\n" +
                        "    $!{pck}\n" +
                        "#end")
                .append("再类属性上增加注解 ： @JsonProperty(value = '$!{request.xxx}'),其中 xxx 为属性名称，其他和原java类保存一致，按照此规则，请给下面java类：\n")
                .append("%s")
                .append("生成一个 vm 模板，返回数据直接是 vm 模板类，不需要返回别的");
    }

    public static final StringBuilder controllerSb = new StringBuilder();
    static {
        controllerSb.append("请根据提供的 Java 类生成一个通用的 Velocity 模板（VM 模板），规则是将 类上的 %s 替换成 $!{vo.classPrefix}，增加导入动态包，并且该代码放在 package 下面一行: \n")
                .append("#foreach($pck in $vo.importPackage)\n" +
                        "    $!{pck}\n" +
                        "#end")
                .append("其他和原java类保存一致，按照此规则，请给下面java类：\n")
                .append("%s")
                .append("生成一个 vm 模板，返回数据直接是 vm 模板类，不需要返回别的");
    }

    public static String getVoPromptTemplate(String classPrefix, String code){
        return String.format(voSb.toString(), classPrefix, code);
    }

    public static String getDtoPromptTemplate(String classPrefix, String code){
        return String.format(dtoSb.toString(), classPrefix, code);
    }

    public static String getControllerPromptTemplate(String classPrefix, String code){
        return String.format(controllerSb.toString(), classPrefix, code);
    }
}
